load("@bazel_skylib//rules:build_test.bzl", "build_test")
load("//python/private:util.bzl", "IS_BAZEL_7_OR_HIGHER")  # buildifier: disable=bzl-visibility
load("//sphinxdocs:sphinx.bzl", "sphinx_build_binary", "sphinx_docs")
load(":defs.bzl", "gen_directory")

# We only build for Linux and Mac because:
# 1. The actual doc process only runs on Linux
# 2. Mac is a common development platform, and is close enough to Linux
#    it's feasible to make work.
# Making CI happy under Windows is too much of a headache, though, so we don't
# bother with that.
_TARGET_COMPATIBLE_WITH = select({
    "@platforms//os:linux": [],
    "@platforms//os:macos": [],
    "//conditions:default": ["@platforms//:incompatible"],
}) if IS_BAZEL_7_OR_HIGHER else ["@platforms//:incompatible"]

sphinx_docs(
    name = "docs",
    srcs = glob(["*.md"]) + [
        ":generated_directory",
    ],
    config = "conf.py",
    formats = ["html"],
    sphinx = ":sphinx-build",
    target_compatible_with = _TARGET_COMPATIBLE_WITH,
)

gen_directory(
    name = "generated_directory",
)

sphinx_build_binary(
    name = "sphinx-build",
    tags = ["manual"],  # Only needed as part of sphinx doc building
    deps = [
        "@dev_pip//myst_parser",
        "@dev_pip//sphinx",
    ],
)

build_test(
    name = "build_tests",
    targets = [":docs"],
)
